#pragma once

#include <QtWidgets/QMainWindow>
#include <QVTKOpenGLNativeWidget.h>
#include <vtkActor.h>
#include <vtkActor2D.h>
#include <vtkCamera.h>
#include <vtkMath.h>
#include <vtkNamedColors.h>
#include <vtkNew.h>
#include <vtkParametricFunctionSource.h>
#include <vtkParametricKuen.h>
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkSliderRepresentation2D.h>
#include <vtkSliderWidget.h>

class ParametricKuenDemo : public QMainWindow
{
    Q_OBJECT

public:
    ParametricKuenDemo(QWidget *parent = Q_NULLPTR);

private:
    vtkNew<vtkSliderWidget> sliderWidgetMaximumV;
    vtkNew<vtkSliderRepresentation2D> sliderRepMaximumV;
    vtkNew<vtkSliderWidget> sliderWidgetMinimumV;
    vtkNew<vtkSliderRepresentation2D> sliderRepMinimumU;
    vtkNew<vtkSliderWidget> sliderWidgetMinimumU;
    vtkNew<vtkSliderRepresentation2D> sliderRepMaximumU;
    vtkNew<vtkSliderWidget> sliderWidgetMaximumU;
    QVTKOpenGLNativeWidget* vtkWidget;
};
